// RAP [rh] Keys completely disabled as not implemented in RWT ///******************************************************************************* // * Copyright (c) 2007, 2008 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ // //package org.eclipse.ui.internal.keys.model; // //import java.util.ArrayList; //import java.util.Collection; //import java.util.HashMap; //import java.util.Iterator; //import java.util.Map; // //import org.eclipse.jface.bindings.Binding; //import org.eclipse.jface.bindings.BindingManager; //import org.eclipse.jface.bindings.TriggerSequence; //import org.eclipse.jface.util.IPropertyChangeListener; //import org.eclipse.jface.util.PropertyChangeEvent; // ///** // * @since 3.4 // * // */ //public class ConflictModel extends CommonModel { // // public static final String PROP_CONFLICTS = "conflicts"; //$NON-NLS-1$ // public static final String PROP_CONFLICTS_ADD = "conflictsAdd"; //$NON-NLS-1$ // public static final String PROP_CONFLICTS_REMOVE = "conflictsRemove"; //$NON-NLS-1$ // // /** // * The set of conflicts for the currently selected element. // */ // private Collection conflicts; // // private BindingManager bindingManager; // // private BindingModel bindingModel; // // /** // * A mapping of binding element to known conflicts. // */ // private Map conflictsMap; // // /** // * @param kc // */ // public ConflictModel(KeyController kc) { // super(kc); // } // // /** // * @return Returns the conflicts. // */ // public Collection getConflicts() { // return conflicts; // } // // /** // * Sets the conflicts to the given collection. Any conflicts in the // * collection that do not exist in the <code>bindingModel</code> are // * removed. // * // * @param conflicts // * The conflicts to set. // */ // public void setConflicts(Collection conflicts) { // Object old = this.conflicts; // this.conflicts = conflicts; // // if (this.conflicts != null) { // Iterator i = this.conflicts.iterator(); // Map bindingToElement = bindingModel.getBindingToElement(); // while (i.hasNext()) { // Object next = i.next(); // if (!bindingToElement.containsValue(next) // && !next.equals(getSelectedElement())) { // i.remove(); // } // } // } // // controller.firePropertyChange(this, PROP_CONFLICTS, old, conflicts); // } // // public void updateConflictsFor(BindingElement source) { // updateConflictsFor(source, false); // } // // public void updateConflictsFor(BindingElement oldValue, // BindingElement newValue) { // updateConflictsFor(oldValue, newValue, false); // } // // public void updateConflictsFor(BindingElement source, boolean removal) { // updateConflictsFor(null, source, removal); // } // // private void updateConflictsFor(BindingElement oldValue, // BindingElement newValue, boolean removal) { // updateConflictsFor(newValue, oldValue == null ? null : oldValue // .getTrigger(), newValue == null ? null : newValue.getTrigger(), // removal); // } // // public void updateConflictsFor(BindingElement newValue, // TriggerSequence oldTrigger, TriggerSequence newTrigger, // boolean removal) { // Collection matches = (Collection) conflictsMap.get(newValue); // if (matches != null) { // if (newTrigger == null || removal) { // // we need to clear this match // matches.remove(newValue); // conflictsMap.remove(newValue); // if (matches == conflicts) { // controller.firePropertyChange(this, PROP_CONFLICTS_REMOVE, // null, newValue); // } // if (matches.size() == 1) { // BindingElement tbe = (BindingElement) matches.iterator() // .next(); // conflictsMap.remove(tbe); // tbe.setConflict(Boolean.FALSE); // if (matches == conflicts) { // setConflicts(null); // } // } // return; // } else if (oldTrigger != null && !newTrigger.equals(oldTrigger)) { // // we need to clear this match // matches.remove(newValue); // conflictsMap.remove(newValue); // // if (matches == conflicts) { // controller.firePropertyChange(this, PROP_CONFLICTS_REMOVE, // null, newValue); // } // if (matches.size() == 1) { // BindingElement tbe = (BindingElement) matches.iterator() // .next(); // conflictsMap.remove(tbe); // tbe.setConflict(Boolean.FALSE); // if (matches == conflicts) { // setConflicts(null); // } // } // } else { // return; // } // } // // if (newValue.getTrigger() == null // || !(newValue.getModelObject() instanceof Binding)) { // return; // } // Binding binding = (Binding) newValue.getModelObject(); // TriggerSequence trigger = binding.getTriggerSequence(); // // matches = (Collection) bindingManager // .getActiveBindingsDisregardingContext().get(trigger); // ArrayList localConflicts = new ArrayList(); // if (matches != null) { // localConflicts.add(newValue); // Iterator i = matches.iterator(); // while (i.hasNext()) { // Binding b = (Binding) i.next(); // if (binding != b // && b.getContextId().equals(binding.getContextId()) // && b.getSchemeId().equals(binding.getSchemeId())) { // Object element = bindingModel.getBindingToElement().get(b); // if (element != null) { // localConflicts.add(element); // } // } // } // } // // if (localConflicts.size() > 1) { // // first find if it is already a conflict collection // Collection knownConflicts = null; // Iterator i = localConflicts.iterator(); // while (i.hasNext() && knownConflicts == null) { // BindingElement tbe = (BindingElement) i.next(); // knownConflicts = (Collection) conflictsMap.get(tbe); // } // if (knownConflicts != null) { // knownConflicts.add(newValue); // conflictsMap.put(newValue, knownConflicts); // newValue.setConflict(Boolean.TRUE); // if (knownConflicts == conflicts) { // controller.firePropertyChange(this, PROP_CONFLICTS_ADD, // null, newValue); // } else if (newValue == getSelectedElement()) { // setConflicts(knownConflicts); // } // return; // } // boolean isSelected = false; // i = localConflicts.iterator(); // while (i.hasNext()) { // BindingElement tbe = (BindingElement) i.next(); // if (tbe != null) { // conflictsMap.put(tbe, localConflicts); // tbe.setConflict(Boolean.TRUE); // } // if (tbe == getSelectedElement()) { // isSelected = true; // } // } // if (isSelected) { // setConflicts(localConflicts); // } // } // } // // public void init(BindingManager manager, BindingModel model) { // bindingManager = manager; // bindingModel = model; // conflictsMap = new HashMap(); // Iterator i = bindingModel.getBindings().iterator(); // while (i.hasNext()) { // BindingElement be = (BindingElement) i.next(); // if (be.getModelObject() instanceof Binding) { // updateConflictsFor(be); // } // } // controller.addPropertyChangeListener(new IPropertyChangeListener() { // public void propertyChange(PropertyChangeEvent event) { // if (event.getSource() == ConflictModel.this // && CommonModel.PROP_SELECTED_ELEMENT.equals(event // .getProperty())) { // if (event.getNewValue() != null) { // updateConflictsFor( // (BindingElement) event.getOldValue(), // (BindingElement) event.getNewValue()); // setConflicts((Collection) conflictsMap.get(event // .getNewValue())); // } else { // setConflicts(null); // } // } else if (BindingModel.PROP_BINDING_REMOVE.equals(event // .getProperty())) { // updateConflictsFor((BindingElement) event.getOldValue(), // (BindingElement) event.getNewValue(), true); // } // } // }); // } //}